package com.chentf.spring.annotation.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {

    /**
     * 小结
     * #{···}：用于执行SpEl表达式，并将内容赋值给属性
     * ${···}：主要用于加载外部属性文件中的值
     * 注意：{}里面的内容必须符合SpEL表达式，通过@Value(“${spelDefault.value}”)我们可以获取属性文件中对应的值，
     *      但是如果属性文件中没有这个属性，那么就会报错。不过，我们可以通过赋予默认值来解决这个问题
     *      @Value("${author.name:meimeixia}")
     *      private String name;
     * ${···}和#{···}可以混合使用，但是必须#{}在外面，${}在里面
     *  因为Spring执行${}的时机要早于#{}，当Spring执行外层的${}时，内部的#{}为空，所以会执行失败
     */

    @Value("张三")
    private String name;

    @Value("18")
    private Integer age;

    @Value("${person.nickName}")
    private String nickName; // 昵称

}
